/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package gui;

import dominio.Funcionario;
import java.util.List;
import javax.swing.JOptionPane;
import negocio.FuncionarioNegocio;
import negocio.Negocio;

/**
 *
 * @author igo
 */
public class ControladorFuncionario implements Controlador{
    private Negocio fn;

    private JanelaCadastro janelaCadastro;

    private JanelaLista janelaLista;

    private Funcionario funcionario;    
    
    private Controlador controladorJanelaPrincipal;

    public ControladorFuncionario(){
        fn = new FuncionarioNegocio();
        funcionario = new Funcionario();
    }
    
    public ControladorFuncionario(Controlador controlador){
        fn = new FuncionarioNegocio();
        this.funcionario= new Funcionario();
        this.controladorJanelaPrincipal = controlador;
    }

    /**
     * Método que insere um objeto Funcionario na camada de negócio e exibe a
     * mensagem de resultado
     */
    public void inserir(){
        if(fn.inserir(funcionario)){
            funcionario = new Funcionario();
        }
        JOptionPane.showMessageDialog(null, fn.getMensagem());
    }

    public void alterar(){
        fn.alterar(funcionario);
        JOptionPane.showMessageDialog(null, fn.getMensagem());
    }

    public void excluir(){
        if(fn.excluir(funcionario)){
            funcionario = new Funcionario();
        }
        JOptionPane.showMessageDialog(null, fn.getMensagem());
    }


    public void listar(){
        List lista = fn.listar();
        janelaLista = new JanelaListaFuncionario(this, lista);
        janelaLista.setVisivel(true);
    }

    public void pesquisar(){
        List lista = fn.pesquisar(funcionario);
        if(lista == null){
            JOptionPane.showMessageDialog(null, fn.getMensagem());
        }else{
            janelaLista = new JanelaListaFuncionario(this, lista);
            janelaLista.setVisivel(true);
            janelaCadastro.setVisivel(false);
            janelaLista = null;
        }
    }

    public void preparaJanelaCadastro(){
        janelaCadastro.preparaTela();
        janelaCadastro.setVisivel(true);
    }

    /**
     * @param janelaCadastro the janelaCadastro to set
     */
    public void setJanelaCadastro(JanelaCadastro janelaCadastro) {
        this.janelaCadastro = janelaCadastro;
    }

    /**
     * @return the funcionario
     */
    public Funcionario getObject() {
        return funcionario;
    }

    /**
     * @param funcionario the funcionario to set
     */
    public void setObject(Object funcionario) {
        this.funcionario = (Funcionario)funcionario;
    }

    public void encerrar(){
        controladorJanelaPrincipal.preparaJanelaCadastro();
    }

    public void cadastrarComposicao() {
        throw new UnsupportedOperationException("Not supported yet.");
    }

}
